<?php


// No direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

jimport( 'joomla.application.component.view' );
require (JPATH_COMPONENT . DS . 'config.shop.php');
require_once (JPATH_COMPONENT_ADMINISTRATOR . DS . 'images.shop.php');
class ShopViewPrice extends JView
{
    var $good_array;
    function display($tpl = null)
    {
        JToolBarHelper::title(JText::_( 'Обновление прайса' ), 'generic.png');
        //JToolBarHelper::save('saveConfig');
        //JToolBarHelper::cancel('cancelSec');
        $stage = JRequest::getVar('stage');
        //printu($_REQUEST,'request');
        //printu($stage,'stage');
        $mainframe = &JFactory::getApplication();
        $db = & JFactory::getDBO();
        switch($stage){
            case 1:
            $nophoto=JRequest::getVar('nophoto1');

            // обновление каталога первого поставщика
            //ini_set('max_execution_time',120);
            ini_set('memory_limit','128M');
            set_time_limit(600);
            
            $mtime = microtime();
            //Разделяем секунды и миллисекунды
            $mtime = explode(" ",$mtime);
            //Составляем одно число из секунд и миллисекунд
            $mtime = $mtime[1] + $mtime[0];
            //Записываем стартовое время в переменную
            $tstart = $mtime;

            // адрес xml файла с прайсом
            $csv_path = 'http://eroticfantasy.ru/EF_PerechenSkollekciyami.csv';
            /*
            $root_dir = str_replace($_SERVER['PHP_SELF'], '', $_SERVER['SCRIPT_FILENAME']);
            $path = $root_dir.'/tmp';
            $f_name = $path.'/import.tmp';
            $fconv_name = $path.'/_import.tmp';
            if (!file_exists($fconv_name)) {
                $csv = iconv('windows-1251','utf-8',  implode("\n", $aFile));
                $r = file_put_contents($fconv_name, $csv);
            }
             *
             */
            // копируем прайс на диск
            $csv = iconv('windows-1251','utf-8',file_get_contents($csv_path));
            file_put_contents('import.tmp', $csv);
            $handle = fopen('import.tmp', "r");
            //$handle = fopen($f_name, "r");

            // получаем категории магазина
            $db->setQuery("SELECT id,parent,name FROM #__shop_categories");
            $categories_shop = $db->loadObjectList('id');
            //printu($categories_shop,'$categories_shop'); die;
            // получаем номера необходимых категорий
            $db->setQuery("SELECT id_original FROM #__shop_category_comparison");
            $categories_compare = $db->loadResultArray();
            //printu($categories_shop,'$categories_shop');
            //printu($categories_compare,'categories_compare');
            

            $db->setQuery("SELECT * FROM #__shop_category_comparison");
            $categories_compare_for_object = $db->loadObjectList('id_original');
            //printu($categories_compare_for_object,'$categories_compare_for_object');
            //	echo '<pre>';
            //	var_dump($categories_compare_for_object);
            //	echo '</pre>';

            // получаем csv файлы с цветом/размером/материалом/производителем/качеством
            $csv_path = 'http://eroticfantasy.ru/EF_Razmer.csv';
            $csv = iconv('windows-1251','utf-8',file_get_contents($csv_path));
            file_put_contents('import_razmer.tmp', $csv);
            $razmer_handle = fopen('import_razmer.tmp', "r");
            while (($data = fgets($razmer_handle)) !== false) {
                    $data = split(';',$data);
                    $razmer[$data[0]] = $data[1];			// колонка 16
            }

            $csv_path = 'http://eroticfantasy.ru/EF_Proizvoditel.csv';
            $csv = iconv('windows-1251','utf-8',file_get_contents($csv_path));
            file_put_contents('import_proizv.tmp', $csv);
            $proizv_handle = fopen('import_proizv.tmp', "r");
            while (($data = fgets($proizv_handle)) !== false) {
                    $data = split(';',$data);
                    $proizv[$data[0]] = $data[1];				// колонка 13
            }

            $csv_path = 'http://eroticfantasy.ru/EF_Material.csv';
            $csv = iconv('windows-1251','utf-8',file_get_contents($csv_path));
            file_put_contents('import_material.tmp', $csv);
            $material_handle = fopen('import_material.tmp', "r");



            while (($data = fgets($material_handle)) !== false) {
                    $data = split(';',$data);
                    $material[$data[0]] = $data[1];			// колонка 	14
            }

            $csv_path = 'http://eroticfantasy.ru/EF_Cvet.csv';
            $csv = iconv('windows-1251','utf-8',file_get_contents($csv_path));
            file_put_contents('import_color.tmp', $csv);
            $color_handle = fopen('import_color.tmp', "r");
            while (($data = fgets($color_handle)) !== false) {
                    $data = split(';',$data);
                    $color[$data[0]] = $data[1];			// колонка 15
            }
			
            //	echo '<pre>';
            //	var_dump($material);
            //	echo '</pre>';
            //  print '<pre>';
            //	print_r($categories_compare);

            //printu($categories_compare,'$categories_compare');

            $rows = array();
            $nested_cats = array();
            $count_cats = array();
            $_i = 0;
            while (($data = fgets($handle)) !== false) {
                $data = split(';',$data);
                if ($data[0]!=0) {
                    if (!isset($count_cats[$data[1]])) {
                        $count_cats[$data[1]] = array(
                            'counts'=>0,
                            'handle'=>0,
                            'update'=>0,
                            'new'=>0,
                            'cat_id'=>$data[1],
                            'site_cat_id'=>$categories_compare_for_object[$data[1]]->id_onsite,
                            'site_caption'=>$categories_shop[$categories_compare_for_object[$data[1]]->id_onsite],
                            'caption'=>$data[3],
                        );
                    }
                    $nested_cats[$data[1]]=$data[2];
                    continue;
                }
                
//if ($data[2] != '06742' && $data[2] != '00506') continue;
//printu($data[3],'good ID: '.$data[1].', cat: '.$data[2]);


                $cat_Id = array_search($data[2],$categories_compare);
                if ($cat_Id===false) {
                    $parent_cat = (isset($nested_cats[$data[2]])?$nested_cats[$data[2]]:false);
                    if (!$parent_cat) {
                        //printu($data[1].'-'.$data[2],'not found parent '.$data[3]);
                        continue;
                    }
                    //printu($parent_cat,'$parent_cat');
                    $cat_Id = array_search($parent_cat,$categories_compare);
                    if ($cat_Id===false) {
                        //printu($data[1].'-'.$data[2],'not found '.$data[3]);
                        continue;
                    }
                    $data['_counter_cat'] = $parent_cat;
                } else {
                    $data['_counter_cat'] = $data[2];
                }
                $count_cats[$data['_counter_cat']]['counts']++;
                //printu($cat_Id,$data[3].' cat_Id');
                $data['articul_wo_char'] = preg_replace('#[^[:digit:]]#Uis', '', $data[4]);
//printu($data[15].', '.$data[16].', '.$data['articul_wo_char'],',only != 0');
                //printu($data,'data');
                //printu($cat_Id,'cat_Id');
                $outer = $categories_compare[$cat_Id];
                //printu($outer,'$outer');
                $inner = $categories_compare_for_object[$outer]->id_onsite;
                $PARENT = $categories_shop[$inner]->parent;
                //printu($inner,'$inner');
                //printu($categories_shop[$inner]->parent,'parent shop');
                //die;

                // Условия принятия в обработку
                if( $data[0]==0 &&                                  // линия товара
                    ($cat_Id !==false || $data[2] == '02594') &&    // спец категория Мужское белье
                    $data['articul_wo_char']!= "")                  //
                {
                    if ($PARENT != 2 &&
                    $data[16] <= 0 &&                               // size
                    $data[15] <= 0                                  // color
                            ) continue;
                    //printu('in handler');
                    $position = stripos(str_ireplace('-','',$data[4]),$data['articul_wo_char']); // позиция вхождения первый цифры в артикул
                    if($position>0){
                        $first_string = substr(str_ireplace('-','',$data[4]),0,$position);

                        //	if(stripos($first_string,'H') === 0){
                        //		$db->setQuery('DELETE FROM #__shop_prod WHERE articul_wo_char="'.$data['articul_wo_char'].'"');
                        //		$db->query();
                        //	}
                        $data['articul_wo_char'] = $first_string.$data['articul_wo_char'];

                    }		
                    //	echo $data[14]."      ".$proizv[$data[14]]."<br/>";
                    $data[13] = trim($proizv[$data[13]]);
                    $data[14] = trim($material[$data[14]]);
                    if ($PARENT == 2) {
                        $data[15] = (isset($color[$data[15]]) ?trim($color[$data[15]]): '');
                        $data[16] = (isset($razmer[$data[16]]) ?trim($razmer[$data[16]]): '');
                    }
                    $data[15] = trim($color[$data[15]]);
                    $data[16] = trim($razmer[$data[16]]);
                    //$data[2] = $categories_compare_for_object[$categories_compare[$cat_Id]]->id_onsite;
                    $data[2] = '-2'; // установили категорию у товаров
                    $data['real_cat'] = $categories_compare_for_object[$categories_compare[$cat_Id]]->id_onsite; // установили категорию у товаров
                    // делаем исключение для больших размеров
                    $rows[] = $data;
                    if($data[2] == "05933" || stripos($data[16],"XL") !== false){
                            $data['articul_wo_char'] .= "L";
                            $data[2] = '-3';// отдельная категория для большого белья
                            $rows[] = $data;
                    }
					
						
					 
                }
            }

            //printu($count_cats,'$count_cats');
            //printu(count($rows),'count all rows');
            //printu($rows[0],'1 line');
            flush();
            //die;
            $new_rows = array();
            $rows_size = count($rows); // изначальный размер массива
            for($k=0;$k<$rows_size;$k++){ // выбираем продукт
                if(isset($rows[$k])){
                    $product = $rows[$k];
                    $count_cats[$product['_counter_cat']]['handle']++;
                    $color_size = array();
                    $i = 0;
                    //print_r($product);

                    $sklad_sum = 0; // общее количество товара на складе
                    // 9 - J, 10 - K, 15 - P, 16 - Q

                    $color_size[$i][0]=trim($product[15]).( $product[16] != '' ?" / ".trim($product[16]):'');
                    $color_size[$i][1]=trim($product[4]);
                    $color_size[$i][2] = $product[9];
                    //print 'comare='.$compare[9];
                    //print_r($compare);
                    //print '<br><hr><br>';
                    $sklad_sum = $sklad_sum + (int)$product[9];//compare
                    $compare=array();
                    foreach($rows as $key=>$compare) {
                    //// и сравнимаем его со всеми товарами
                        if($compare['articul_wo_char'] == $product['articul_wo_char'] && $key != $k)
                        {
                            $i++;
                            //	print '<br>OK</br>';
                            //	echo nl2br(trim($compare[15]));
                            $color_size[$i][0]= trim($compare[15]).( $compare[16] != '' ?" / ".trim($compare[16]):'');
                            $color_size[$i][1] = trim($compare[4]);
                            $color_size[$i][2] = $compare[9];
                            $color_size[$i][3] = $compare[3]; // запоминаем имя
                            $sklad_sum = $sklad_sum + (int)$compare[9];
                            unset($rows[$key]);
                        }
                    }
					
                    $product['size_color'] = $color_size;
                    if($sklad_sum > 0) {
                        $product['sklad_sum'] = 1;
                    } else {
                        $product['sklad_sum'] = 0;
                    }
                    //print '<br>Sklad='.	$product['sklad_sum'];
                    $new_rows[] = $product;
                }
            } // END FOR ALL ROWS
            //printu(count($rows),'count all rows');
            //printu(count($new_rows),'count new rows');
            //printu($new_rows[0],'1 line');
            flush();
            $query = "DELETE FROM #__shop_fields_values WHERE from_xml=1 AND field_id=1 ";
            //print $query;
            $db->setQuery($query);
            $db->query();

            $query = "SELECT id,articul,sklad_sum FROM #__shop_prod WHERE from_xml=1";
            $db->setQuery($query);
            $goods = $db->loadObjectList();

            //printu(count($goods),'count goods in DB');
            //printu($goods[0],'1 line');
            flush();
            //die;
            //echo '<pre>GOODS';
            //	var_dump($goods);
            //print_r($goods);
            //echo '</pre>';
            //	die;

            /* Get cost options */
            $sql = "SELECT * FROM #__shop_cost";
            $db->setQuery($sql);
            $aCosts = $db->loadObjectList();

            /* UPDATE && INSERT FOR ALL  */

            foreach($goods as $good) {
                //print '<br>'.$good->articul.'<br>';
                $query = "SELECT sklad FROM #__shop_fields_values
                    WHERE from_xml=1 AND field_id=1 AND object_id=".$good->id;
                $db->setQuery($query);
                $fields = $db->loadObjectList();
                //print_r($fields);
                //print '<br>';
                $countMe = 0;
                if(count($fields)>0) {
                    foreach($fields as $field) {
                        $countMe+=$field->sklad;
                    }
                }
                if($countMe>0) {
                    $countMe = 1;
                }  else {
                    $countMe = 0;
                }
                if($countMe != $good->sklad_sum) {
                    $db->setQuery($sql2="UPDATE #__shop_prod SET sklad_sum=".$countMe."
                        WHERE id=".$good->id);
                    $db->query();
                }
            }
            //printu(count($new_rows),'new_rows');
            //print '<pre>';
            //print_r($new_rows);
            //die;
            //exit;
            /*
        [05913] => Array
        (
            [counts] => 119
            [cat_id] => 05913
            [site_cat_id] => 54
            [caption] => БДСМ, Фетиш (Подиум, Россия)
        )
             */
            $_all_upd = array(
                'all'=>0,
                'upd'=>0,
                'new'=>0,
            );
            foreach($new_rows as $product) {
                $_all_upd['all']++;

                // создаем запрос для базы для проверки существуеттакой товар в базе или нет
                $query = "SELECT id,xml_price,price,update_description FROM #__shop_prod WHERE articul_wo_char='".$product['articul_wo_char']."' AND from_xml=1";
                //print ''.$query.'<br>';
                $db->setQuery($query);
                $good=$db->loadObject();
                
                $alias = str_ireplace(' ','-',$this->_translate(mysql_real_escape_string(preg_replace('#[\\.,;:-]*#Uis', '', rtrim($product[3])))));
                
                $query = "SELECT alias FROM #__shop_prod WHERE alias='".$alias."'";
                if($good->id > 0) {
                    $query.=" AND id!=".$good->id;
                }
                $db->setQuery($query);
                $alias_exist = $db->loadResult() !== null;
                
                $i = 1;
                while($alias_exist){
                    $alias = str_ireplace(' ','-',$this->_translate(mysql_real_escape_string(preg_replace('#[\\.,;:-]*#Uis', '', rtrim($product[3])))))."_".$i;
                    $query = "SELECT alias FROM #__shop_prod WHERE alias='".$alias."'";
                    if($good->id > 0) {
                        $query.=" AND id!=".$good->id;
                    }
                    $db->setQuery($query);
                    $alias_exist = $db->loadResult() !== null;
                    $i++;
                }
                
                if($good->id > 0){ // если такой товар в базе уже присутствует , то обновляем его поля

                    if($product[8]>0)
                        if($good->xml_price != $good->price) // если не равны то не обновляем поле price
                            $price = "xml_price='".(int)$product[8]."',";
                        else
                            $price = "xml_price='".(int)$product[8]."',price='".(int)$product[8]."',";
                    //$query = "UPDATE #__shop_prod SET old_name='".mysql_real_escape_string($product[3])."',articul='".mysql_real_escape_string($product[4])."',whole_price='".(int)$product[7]."',".$price."manufact='".mysql_real_escape_string($product[13])."',material='".mysql_real_escape_string($product[14])."',sklad_sum='".$product['sklad_sum']."'";
                    /*
                    if ((int)$product['real_cat'] != 0) {
                        $upd_cat = "cat_id = '".(int)$product['real_cat']."',
                            published = '0',";
                    } else $upd_cat = '';
                     *
                     */
                    $upd_cat = '';
                    $upd_price = '';
                    // check price
                    foreach ($aCosts as $oRule) {
                        if ($oRule->for_upd == '0') continue;
                        if ($product[7] == $good->whole_price) continue;
                        if ($product[7] >= $oRule->price_min && $product[7] <= $oRule->price_max)  {
                            $upd_price = "price = '".round(($product[7]*$oRule->koef),-1)."',";
                        }
                    }

                    $query = "UPDATE #__shop_prod
                        SET
                            {$upd_cat}
                            {$upd_price}
                            old_name='".mysql_real_escape_string($product[3])."',
                            whole_price='".(int)$product[7]."',
                            ".$price."manufact='".mysql_real_escape_string($product[13])."',
                            material='".mysql_real_escape_string($product[14])."',
                            sklad_sum='".$product['sklad_sum']."'";

                    // определяем нужно ли обновлять описание
                    if($good->update_description == 1) {
                        $query.=",description='".mysql_real_escape_string($product[6])."'";
                    }

                    $query.= ",from_xml=1 WHERE id=".$good->id." AND from_xml=1";
                                                    //print $query.'<br>';
                    //print '<br><hr><br><span style="color:green">arcicul='.$product[7].' sklad='.$product['sklad_sum'].'</span><br>';
                    $db->setQuery($query);
                    $db->query();
                    //echo $db->getErrorMsg().'<br/>';
                    $item_id = $good->id;
                    $_all_upd['upd']++;
                    $count_cats[$product['_counter_cat']]['update']++;
                } else {// если же не присутствует , то добавляем его
                    // check price
                    $price_val = (int)$product[8];
                    foreach ($aCosts as $oRule) {
                        if ($oRule->for_new == '0') continue;
                        if ($product[7] >= $oRule->price_min && $product[7] <= $oRule->price_max)  {
                            $price_val= round(($product[7]*$oRule->koef),-1);
                        }
                    }
                    $query ="INSERT INTO #__shop_prod (articul,cat_id,name,old_name,xml_price,price,
                        description,from_xml,whole_price,update_description,alias,manufact,material,
                        articul_wo_char,sklad_sum,dublicated_cat,main_img,add_img,old_price,additional_text,
                        metatitle,metakey,metadesc,metadata,published)
                        VALUES (
                        '".mysql_real_escape_string($product[4])."','".($product[2] == '-3'?'-3':$product['real_cat'])."',
                        '".mysql_real_escape_string($product[3])."','".mysql_real_escape_string($product[3])."',
                        '".(int)$product[8]."','".$price_val."','".mysql_real_escape_string($product[6])."',
                        '1','".mysql_real_escape_string($product[7])."',0,'".$alias."',
                        '".mysql_real_escape_string($product[13])."','".mysql_real_escape_string($product[14])."',
                        '".$product['articul_wo_char']."','".$product['sklad_sum']."','0','','',0,'','','',
                        '','','0')";

                    //printu($query,'Insert new');
                    flush();
                    $db->setQuery($query);
                    $db->query();
                    $item_id = $db->insertid();
                    $_all_upd['new']++;
                    $count_cats[$product['_counter_cat']]['new']++;
                }
                $query = "SELECT id,articul,main_img FROM #__shop_prod WHERE id='".$item_id."' AND from_xml=1";
                $db->setQuery($query);
                $item=$db->loadObject();
                //	echo '<pre>';
                //	var_dump($product["size_color"]);
                //	echo '</pre>';


                foreach($product["size_color"] as $color_size){
                        if($item->id != ''){
                                $query = "INSERT INTO #__shop_fields_values (field_id,object_id,value,sklad,from_xml,original_articul,original_name) VALUES (1,'".$item->id."','".$color_size[0]."','".$color_size[2]."',1,'".mysql_real_escape_string($color_size[1])."','".$color_size[3]."')";
                                $db->setQuery($query);
                                $db->query();
                        }
                }
                //printu($nophoto,'$nophoto');
                
                // скачиваем основные фото
                if($item->main_img == ""){
                    //print 'Get PHOTO '.$item->articul.'<br>';
                    //printu(microtime(),'time');
                    $file_path = 'http://eroticfantasy.ru/photo/'.$item->articul.'_a.jpg';
                    $file_dest = JPATH_SITE . '/components/com_shop/images/originals' . DS . $item->articul.'_a.jpg';

                    $curl = curl_init($file_path);
                    curl_setopt($curl, CURLOPT_HEADER ,1);
                    curl_setopt($curl,CURLOPT_USERAGENT,'Googlebot/2.1 (+http://www.google.com/bot.html)');
                    curl_setopt($curl, CURLOPT_NOBODY ,1);
                    curl_setopt($curl, CURLOPT_RETURNTRANSFER ,1);
                    curl_exec($curl);
                    $image_size = curl_getinfo($curl,CURLINFO_CONTENT_LENGTH_DOWNLOAD);
                    $http_code = curl_getinfo($curl,CURLINFO_HTTP_CODE);
                    curl_close($curl);
                    if($http_code == 200 && $image_size > 3000){
                            copy($file_path,$file_dest);

                            $query = "UPDATE #__shop_prod SET main_img='".$item->articul."_a.jpg'"." WHERE id=".$item->id;
                            //printu($query,'update photo');
                            flush();
                            $db->setQuery($query);
                            $db->query();
                    }
                    $m++;
                        //printu(microtime(),'time');
                        //die;
                }
                else{
                    if (empty($nophoto))
                    {

                        $file_path = 'http://eroticfantasy.ru/photo/'.$item->main_img;
                        $file_dest = JPATH_SITE . '/components/com_shop/images/originals' . DS .$item->main_img;
                        $curl = curl_init($file_path);
                        curl_setopt($curl, CURLOPT_HEADER ,1);
                        curl_setopt($curl, CURLOPT_NOBODY ,1);
                        curl_setopt($curl,CURLOPT_USERAGENT,'Googlebot/2.1 (+http://www.google.com/bot.html)');
                        curl_setopt($curl, CURLOPT_RETURNTRANSFER ,1);
                        curl_exec($curl);
                        $image_size = curl_getinfo($curl,CURLINFO_CONTENT_LENGTH_DOWNLOAD);
                        $http_code = curl_getinfo($curl,CURLINFO_HTTP_CODE);
                        curl_close($curl);

                        $file_size = @filesize($file_dest);
                                                //die('admi2');
                        if($http_code == 200 && $image_size > 3000)
                                {
                                         if($file_size != $image_size){

                                        copy($file_path,$file_dest);

                                        $query = "UPDATE #__shop_prod SET main_img='".$item->articul.".jpg'"." WHERE id=".$item->id;
                                        $db->setQuery($query);
                                        $db->query();
                                }
                                }
                    }
                    $k++;
                }
            }
            print "Товаров в обработке: {$_all_upd['all']}<br>\n";
            print "Товаров обновлено: {$_all_upd['upd']}<br>\n";
            print "Товаров добавлено: {$_all_upd['new']}<br>\n<br>\n";
            print "<b>По категориям:</b><br>\n";
            foreach ($count_cats as $aCat) {
                if (!is_object($aCat['site_caption'])) continue;
                if ($aCat['handle'] == 0) continue;
                print "<b>&nbsp;&nbsp;*&nbsp;".$aCat['site_caption']->name.":</b><br>\n";
                print "&nbsp;&nbsp;&nbsp;&nbsp;Обновлено: ".$aCat['update']."<br>\n";
                print "&nbsp;&nbsp;&nbsp;&nbsp;Добавлено: ".$aCat['new']."<br>\n";
            }
            /*
        [00385] => Array
        (
            [counts] => 215
            [handle] => 168
            [update] => 168
            [new] => 0
            [cat_id] => 00385
            [site_cat_id] => 47
            [site_caption] => stdClass Object
                (
                    [id] => 47
                    [name] => Продукция с феронами
                )

            [caption] => Продукция с феромонами
        )

             */
            $mtime = microtime();
            $mtime = explode(" ",$mtime);
            $mtime = $mtime[1] + $mtime[0];
            //Записываем время окончания в другую переменную
            $tend = $mtime;
            //Вычисляем разницу
            $totaltime = ($tend - $tstart);
            //Выводим не экран
            @unlink('import.tmp');
            @unlink('import_razmer.tmp');
            @unlink('import_proizv.tmp');
            @unlink('import_material.tmp');
            @unlink('import_color.tmp');
            echo "<br/><br/>Страница сгенерирована за $totaltime секунд !";
            echo "<br/> Peak memory usage: " . (memory_get_peak_usage(true) / 1024 / 1024) . " MB\r\n";

            //$mainframe->redirect("index.php?option=com_nix&view=price&stage=price_ok");
    break;
    case 'price_ok':
        echo '<h2>Прайс успешно загружен , перейдите к следующему шагу.</h2>';
    break;
    case 'delay_5sec': {
        $mainframe = &JFactory::getApplication();
        $stage = JRequest::getVar('next_step');
        $iterration = JRequest::getVar('next_iter');
        $tstart = JRequest::getVar('tstart');
        switch($stage){
            case 'main_thumbs':
                    usleep(500);
                    $mainframe->redirect("index.php?option=com_shop&view=price&stage=2&iter=".$iterration."&tstart=".$tstart);
                    break;
            case 'main_thumbs2':
                    usleep(500);
                    $mainframe->redirect("index.php?option=com_shop&view=price&stage=102&iter=".$iterration."&tstart=".$tstart);
                    break;
            case 'add_img':
            //	usleep(500);
                    $mainframe->redirect("index.php?option=com_shop&view=price&stage=3&iter=".$iterration."&tstart=".$tstart);
                    break;
        }


    break;
    }
    case 11:
        ini_set('max_execution_time',60);
        ini_set('memory_limit','64M');
        $mtime = microtime();
        //Разделяем секунды и миллисекунды
        $mtime = explode(" ",$mtime);
        //Составляем одно число из секунд и миллисекунд
        $mtime = $mtime[1] + $mtime[0];
        //Записываем стартовое время в переменную
        $tstart = $mtime;

        $query = "SELECT id,articul,sklad_sum FROM #__shop_prod WHERE from_xml=1";
        $db->setQuery($query);
        $goods = $db->loadObjectList();
        //echo '<pre>';
        //var_dump($goods);
        //echo '</pre>';
        foreach($goods as $good){
                $query = "SELECT sklad FROM #__shop_fields_values WHERE from_xml=1 AND field_id=1 AND object_id=".$good->id;
                $db->setQuery($query);
                $fields = $db->loadObjectList();

                        $count = 0;
                        if(count($fields)>0){
                        foreach($fields as $field){
                                $count+=$field->sklad;
                        }
                        }
                        if($count>0)
                                $count = 1;
                        else
                                $count = 0;
                        if($count != $good->sklad_sum){
                                $db->setQuery("UPDATE #__shop_prod SET sklad_sum=".$count." WHERE id=".$good->id);
                                $db->query();
                        }

        }

        $mtime = microtime();
        $mtime = explode(" ",$mtime);
        $mtime = $mtime[1] + $mtime[0];
        //Записываем время окончания в другую переменную
        $tend = $mtime;
        //Вычисляем разницу
        $totaltime = ($tend - $tstart);
        //Выводим не экран
        echo "<br/><br/>Страница сгенерирована за $totaltime секунд !";
        echo "<br/> Peak memory usage: " . (memory_get_peak_usage(true) / 1024 / 1024) . " MB\r\n";
    break;
    case 2: // создаем thumbs для фоток
        //ini_set('max_execution_time',60);
        ini_set('memory_limit','64M');
        set_time_limit(600);
        $iterration = JRequest::getInt('iter',0); // получаем текущий шаг операции
        $step = 150; // задали шаг операции , т.е. за каждый цикл будет обрабатыватся по 50 изображений
        if($iterration == 0){ // если шаг нулевой , то получаем время начала
            $mtime = microtime();
            //Разделяем секунды и миллисекунды
            $mtime = explode(" ",$mtime);
            //Составляем одно число из секунд и миллисекунд
            $mtime = $mtime[1] + $mtime[0];
            //Записываем стартовое время в переменную
            $tstart = $mtime;
        }
        else
            $tstart = JRequest::getVar('tstart');

        $query = "SELECT main_img FROM #__shop_prod WHERE from_xml=1 LIMIT ".($step*$iterration).",".$step; // получаем из базы все товары, добавленные из xml
        $db->setQuery($query);
        $items = $db->loadObjectList();
        echo count($items);
        foreach($items as $item){
            //	echo $item->main_img."<br/>";
            if($item->main_img != '' && file_exists(JPATH_SITE . '/components/com_shop/images/originals' . DS .$item->main_img)){
                dgImageCreate(JPATH_SITE . '/components/com_shop/images/originals' . DS .$item->main_img,
                        JPATH_SITE . '/components/com_shop/images/small' . DS . $item->main_img, 200, 200, '95', '1');
                dgImageCreate(JPATH_SITE . '/components/com_shop/images/originals' . DS .$item->main_img,
                        JPATH_SITE . '/components/com_shop/images/big' . DS . $item->main_img, 220, 280, '95', '1');
            }
        }
        $mtime = microtime();
        $mtime = explode(" ",$mtime);
        $mtime = $mtime[1] + $mtime[0];
        //Записываем время окончания в другую переменную
        $tend = $mtime;
        //Вычисляем разницу
        $totaltime = ($tend - $tstart);
        //Выводим не экран
        if(count($items) == $step)
            $mainframe->redirect("index.php?option=com_shop&view=price&stage=delay_5sec&next_iter=".($iterration+1)."&next_step=main_thumbs&tstart=".$tstart);
        else
            echo '<h2>Создание превью завершено !</h2>';
        echo "<br/><br/>Страница сгенерирована за $totaltime секунд !";
        //echo "<br/> Peak memory usage: " . (memory_get_peak_usage(true) / 1024 / 1024) . " MB\r\n";
    break;
    case 3: // обновление картинок побочных и создание их тумбсов
        /*
        1 получаем список товаров по цветам
        2
        */
        ini_set('max_execution_time',60);
        ini_set('memory_limit','64M');
        $iterration = JRequest::getInt('iter',0); // получаем текущий шаг операции
        $step = 25; // задали шаг операции , т.е. за каждый цикл будет обрабатыватся по  изображений
        if($iterration == 0){ // если шаг нулевой , то получаем время начала
            $mtime = microtime();
            //Разделяем секунды и миллисекунды
            $mtime = explode(" ",$mtime);
            //Составляем одно число из секунд и миллисекунд
            $mtime = $mtime[1] + $mtime[0];
            //Записываем стартовое время в переменную
            $tstart = $mtime;
        }
        else
                $tstart = JRequest::getVar('tstart');
        // получаем основные фото для товаров
        $query = "SELECT id,articul,add_img,main_img FROM #__shop_prod WHERE from_xml=1 ORDER BY id ASC LIMIT ".($step*$iterration).",".$step." "; // получаем из базы все товары, добавленные из xml
        $db->setQuery($query);
        $items = $db->loadObjectList();

     foreach($items as $item){
                    $up_add_img = array();
                    $add_images = explode(';',$item->add_img); // получаем все изображения
                    $additional_image_sizes = array();
                    $additional_image_sizes[] = @filesize(JPATH_SITE . '/components/com_shop/images/originals' . DS . $item->main_img );
                    if(count($add_images)>0 && $item->add_img != ''){
                            foreach($add_images as $add_image){
                                    $file_path = 'http://eroticfantasy.ru/photo/'.$add_image;
                                    $file_dest = JPATH_SITE . '/components/com_shop/images/originals' . DS . $add_image;
                                    $curl = curl_init($file_path);
                                    curl_setopt($curl, CURLOPT_HEADER ,1);
                                    curl_setopt($curl, CURLOPT_NOBODY ,1);
                                    curl_setopt($curl, CURLOPT_RETURNTRANSFER ,1);
                                    curl_setopt($curl,CURLOPT_USERAGENT,'Googlebot/2.1 (+http://www.google.com/bot.html)');
                                    curl_exec($curl);
                                    $image_size = curl_getinfo($curl,CURLINFO_CONTENT_LENGTH_DOWNLOAD);
                                    $http_code = curl_getinfo($curl,CURLINFO_HTTP_CODE);
                                    curl_close($curl);

                                    $file_size = @filesize($file_dest);
                                    $additional_image_sizes[] = $file_size;
                                    if($http_code == 200 && $add_image != '' && $image_size > 5000)
                                            if($file_size != $image_size){
                                                    copy($file_path,$file_dest);
                                                    dgImageCreate($file_dest, JPATH_SITE . '/components/com_shop/images/big' . DS . $add_image, '220', '280', '95', '1');
                                                    dgImageCreate($file_dest, JPATH_SITE . '/components/com_shop/images/small' . DS . $add_image, 200, 200, '95', '1');
                                            }
                            }
                            $i = count($add_images);
                    }
                    else
                            $i = 0;
                    // a - 97



                    $query = "SELECT * FROM #__shop_fields_values WHERE object_id=".(int)$item->id;
                    $db->setQuery($query);
                    $all_images = $db->loadObjectList();

                    foreach($all_images as $image){
                            $i = 96;
                            do{
                                    $i++;
                                    $file_path = 'http://eroticfantasy.ru/photo/'.$image->original_articul.'_'.chr($i).'.jpg';
                                    $file_dest = JPATH_SITE . '/components/com_shop/images/originals' . DS .$image->original_articul.'_'.chr($i).'.jpg';
                                    $curl = curl_init($file_path);
                                    curl_setopt($curl, CURLOPT_HEADER ,1);
                                    curl_setopt($curl, CURLOPT_NOBODY ,1);
                                    curl_setopt($curl, CURLOPT_RETURNTRANSFER ,1);
                                    curl_setopt($curl,CURLOPT_USERAGENT,'Googlebot/2.1 (+http://www.google.com/bot.html)');
                                    curl_exec($curl);
                                    $image_size = curl_getinfo($curl,CURLINFO_CONTENT_LENGTH_DOWNLOAD);
                                    $http_code = curl_getinfo($curl,CURLINFO_HTTP_CODE);
                                    curl_close($curl);

                                    $alredy_added = array_search($image->original_articul.'_'.chr($i).'.jpg',$add_images);
                                    $existing_image_size = $this->_imageSize($additional_image_sizes,$image_size);
                                    if($http_code == 200 && $image_size > 5000 && $alredy_added === false  && $existing_image_size){							  $additional_image_sizes[] = $image_size;
                                            copy($file_path,$file_dest);
                                            dgImageCreate($file_dest, JPATH_SITE . '/components/com_shop/images/big' . DS . $image->original_articul.'_'.chr($i).'.jpg', '220', '280', '95', '1');
                                            dgImageCreate($file_dest, JPATH_SITE . '/components/com_shop/images/small' . DS . $image->original_articul.'_'.chr($i).'.jpg', 200, 200, '95', '1');
                                            $up_add_img[] = $image->original_articul.'_'.chr($i).'.jpg'; // собираем все добавленые фото
                                    }



                            }
                            while($http_code == 200 && $image_size > 5000 );
                    }
                    if($item->add_img != '') $up_add_img[] = $item->add_img;
                    $update_add_image = @implode(';',$up_add_img);
                    $query = "UPDATE #__shop_prod SET add_img='".$update_add_image."' WHERE id=".$item->id;
                    $db->setQuery($query);
                    $db->query();
                    $item->add_img = $update_add_image;

            }

                                    $mtime = microtime();
            $mtime = explode(" ",$mtime);
            $mtime = $mtime[1] + $mtime[0];
            //Записываем время окончания в другую переменную
            $tend = $mtime;
            //Вычисляем разницу
            $totaltime = ($tend - $tstart);
            //Выводим не экран
            if(count($items) == $step){
                    echo '<h2>Выполняется этап '.($iterration+1).' Ожидайте !</h2>';
            //	$mainframe->redirect("index.php?option=com_shop&view=price&stage=delay_5sec&next_iter=".($iterration+1)."&next_step=add_img&tstart=".$tstart);
                    echo '<script>document.location="index.php?option=com_shop&view=price&stage=delay_5sec&next_iter='.($iterration+1).'&next_step=add_img&tstart='.$tstart.'"</script>';

            }
            else
                    echo '<h2>Создание превью завершено !</h2>';
            echo "<br/><br/>Страница сгенерирована за $totaltime секунд !";
    break;
    case 10:
        ini_set('max_execution_time',120);
        ini_set('memory_limit','64M');

        $mtime = microtime();
        //Разделяем секунды и миллисекунды
        $mtime = explode(" ",$mtime);
        //Составляем одно число из секунд и миллисекунд
        $mtime = $mtime[1] + $mtime[0];
        //Записываем стартовое время в переменную
        $tstart = $mtime;

        $query = "SELECT main_img,add_img FROM #__shop_prod WHERE from_xml>0";
        $db->setQuery($query);
        $images_to_delete = $db->loadObjectList();
			
        foreach($images_to_delete as $image){
            $paths = explode(';',$image->add_img);
            @unlink(JPATH_SITE . '/components/com_shop/images/originals' . DS .$image->main_img); // удаляем оригинал
            @unlink(JPATH_SITE . '/components/com_shop/images/big' . DS .$image->main_img); // удаляем small
            @unlink(JPATH_SITE . '/components/com_shop/images/small' . DS .$image->main_img); // удаляем big
            foreach($paths as $path){
                @unlink(JPATH_SITE . '/components/com_shop/images/originals' . DS .$path); // удаляем оригинал
                @unlink(JPATH_SITE . '/components/com_shop/images/big' . DS .$path); // удаляем small
                @unlink(JPATH_SITE . '/components/com_shop/images/small' . DS .$path); // удаляем big
                //		echo 'hi<br/>';
            }

        }
        $query = "UPDATE #__shop_prod SET main_img='',add_img='' WHERE from_xml>0";
        $db->setQuery($query);
        $db->query();

        $mtime = microtime();
        $mtime = explode(" ",$mtime);
        $mtime = $mtime[1] + $mtime[0];
        //Записываем время окончания в другую переменную
        $tend = $mtime;
        //Вычисляем разницу
        $totaltime = ($tend - $tstart);
        //Выводим не экран

        echo '<h2>Фото удалены !</h2>';
        echo "<br/><br/>Страница сгенерирована за $totaltime секунд !";

    break;
    case 101: // второй поставщик
        //print 'второй поставщик';
        //die('OK');;
        ini_set('max_execution_time',120);
        ini_set('memory_limit','64M');
        set_time_limit(600);

        $mtime = microtime();
        //Разделяем секунды и миллисекунды
        $mtime = explode(" ",$mtime);
        //Составляем одно число из секунд и миллисекунд
        $mtime = $mtime[1] + $mtime[0];
        //Записываем стартовое время в переменную
        $tstart = $mtime;
        $nophoto2=JRequest::getVar('nophoto2');
        //print $nophoto2;
        //die;
		
        // подключаем библиотеку для чтения xls
        require_once ('excel_reader2.php');
        $this->goods = $line = array();     // SOFT
        $this->goods2 = $line2 = array();    // ROXANA
        $this->goods3 = array();    // SEX-SHOP
        $xls_path = array('http://www.optintim.ru/database_opt.xls','http://www.optintim.ru/database_opt1.xls');
        //$xls_path = array('http://www.optintim.ru/database_opt1.xls');
        foreach ($xls_path as $file)
            $this->handle_database_opt ($file);
        //printu(count($this->goods),'$goods');
        //printu(count($this->goods2),'$goods2');
        //printu(count($this->goods3),'$goods3');
        //printu($this->goods3,'$goods3');

        //die;
        //--------- Берём все товары от soft
        $count2 = count($this->goods);
        for($j=0;$j<$count2;$j++)
        {
            if(isset($this->goods[$j]))
            {
                $sklad_sum =$this->goods[$j]['sklad'][0];
                foreach($this->goods as $key=>$good) {
                    if($good['last_color_digit'] == $this->goods[$j]['last_color_digit'] && $key!=$j)
                    {
                        $this->goods[$j]['color_size'][] = $good['color_size'][0];
                        $this->goods[$j]['sklad'][] = $good['sklad'][0];
                        $this->goods[$j]['original_aricul'][] = $good['articul'];
                        $this->goods[$j]['whole_price'][] = $good['whole_price'][0];
                        $this->goods[$j]['add_img'][] = $good['main_img'];
                        $sklad_sum +=$good['sklad'][0];
                        unset($this->goods[$key]);
                    }
                }
                if($sklad_sum>0) {
                    $this->goods[$j]['sklad_sum'] = 1;
                } else {
                    $this->goods[$j]['sklad_sum'] =0;
                }
                $line[] = $this->goods[$j];
                unset($this->goods[$j]);
            }
        }
        //echo '<pre>Line=';
        //print_r($line);
        //echo '</pre>';
			
        // перебираем для роксаны

        $count3 = count($this->goods2);
        for($j=0;$j<$count3;$j++){
            if(isset($this->goods2[$j])){
                //printu($this->goods2[$j]['name'],'name');
                //printu($this->goods2[$j]['compare_articul'],'compare_articul');
                $sklad_sum =$this->goods2[$j][sklad][0];
                foreach($this->goods2 as $key=>$good){
                    //printu($good['compare_articul'],'compare art');
                    if($good['compare_articul'] == $this->goods2[$j]['compare_articul'] && $key!=$j){
                        $this->goods2[$j]['color_size'][] = $good['color_size'][0];
                        $this->goods2[$j]['sklad'][] = $good['sklad'][0];
                        $this->goods2[$j]['original_aricul'][] = $good['articul'];
                        $this->goods2[$j]['whole_price'][] = $good['whole_price'][0];
                        $this->goods2[$j]['add_img'][] = $good['main_img'];
                        $sklad_sum +=$good['sklad'][0];
                        unset($this->goods2[$key]);
                    }
                }
                if($sklad_sum>0)
                    { $this->goods2[$j]['sklad_sum'] = 1;
                    }
                else
                    {
                        $this->goods2[$j]['sklad_sum'] =0;
                    }
                $line2[] = $this->goods2[$j];
                unset($this->goods2[$j]);
            }
        }
        //printu($line2,'line2');
        $count4 = count($this->goods3);
        for($j=0;$j<$count4;$j++){
            if(!isset($this->goods3[$j])) continue;
            $sklad_sum = $this->goods3[$j]['sklad'][0];
            if($sklad_sum > 0) $this->goods3[$j]['sklad_sum'] = 1;
            else $this->goods3[$j]['sklad_sum'] = 0;
        }
	
        $goodsNew = array_merge($line,$line2);
        //printu(count($goodsNew),'array_merge($line,$line2) $goodsNew');
        $goodsNew = array_merge($goodsNew,$this->goods3);
        unset($this->goods);
        unset($this->goods2);
        unset($this->goods3);
        
        /* Get cost options */
        $sql = "SELECT * FROM #__shop_cost";
        $db->setQuery($sql);
        $aCosts = $db->loadObjectList();

        //printu(count($goodsNew),'array_merge($goodsNew,$this->goods3 $goodsNew');
        /**
        Мудрец часть 1
        E - у поставщика 1
        O - у поставщика 2
        первый erotic-fantasy, второй optintim
        */
        $tovar=array();
        $_all_counter = array(
            'all'=>0,
            'upd'=>0,
            'new'=>0,
        );
        foreach($goodsNew as $tovar)
        {
            $_all_counter['all']++;
            // создаем запрос для базы для проверки существует такой товар в базе или нет
            $query = "SELECT id,update_description FROM #__shop_prod WHERE articul='".$tovar['articul']."' AND from_xml=2";
            //printu($query,'sql');
            $db->setQuery($query);
            $good=$db->loadObject();
            /*
            if (!$good) {
                $query = "SELECT id,update_description FROM #__shop_prod
                    WHERE articul IN ('".implode("','",$tovar['original_aricul'])."') AND from_xml=2";
                //printu($query,'sql');
                $db->setQuery($query);
            }
             * 
             */
            //printu($good,'good');
            $alias = str_ireplace(' ','-',$this->_translate(mysql_real_escape_string(preg_replace('#[\\.,;:-]*#Uis', '', rtrim($tovar['name'])))));

            $query = "SELECT alias FROM #__shop_prod WHERE alias='".$alias."'";
            if($good !== null) {
                $query.=" AND id!=".$good->id;
            }
            $db->setQuery($query);
            $alias_exist = $db->loadResult() !== null;
            $i = 1;
            $price = array_unique($tovar['whole_price']);
            $max_price=$price[0];
            for($i=0;$i<count($price);$i++){
                    if($max_price < $price[$i])
                            {
                                    $max_price = $price[$i];
                            }
            }
            $tovar['whole_price'][0] = $max_price;

            $sklad_sum = 0;
            //print 'Sklad<br>';
            //print_r($tovar['sklad']);
            foreach($tovar['sklad'] as $key=>$sklad){
                if($sklad>0){
                    $sklad_sum =1;
                    break;
                }

            }
            while($alias_exist){
                    $alias = str_ireplace(' ','-',$this->_translate(mysql_real_escape_string(preg_replace('#[\\.,;:-]*#Uis', '', rtrim($tovar['name'])))))."_".$i;
                    $query = "SELECT alias FROM #__shop_prod WHERE alias='".$alias."'";
                    if($good !== null)
                            $query.=" AND id!=".$good->id;
                    $db->setQuery($query);
                    $alias_exist = $db->loadResult() !== null;
                    //printu($alias_exist,'$alias_exist');
                    $i++;
            }
				
            if($good !== null){ // если такой товар в базе уже присутствует , то обновляем его поля
                $upd_price = '';
                // check price
                foreach ($aCosts as $oRule) {
                    if ($oRule->for_upd == '0') continue;
                    if ($tovar['whole_price'][0] == $good->whole_price) continue;
                    if ($tovar['whole_price'][0] >= $oRule->price_min &&
                        $tovar['whole_price'][0] <= $oRule->price_max)  {
                        $upd_price = "price = '".round(($tovar['whole_price'][0]*$oRule->koef),-1)."',";
                    }
                }
                    $query = "UPDATE #__shop_prod SET
                        {$upd_price}
                        old_name='".mysql_real_escape_string($tovar['name'])."',
                        whole_price='".(int)$tovar['whole_price'][0]."',
                        sklad_sum='".$sklad_sum."',
                        from_xml='2',
                        manufact='".$tovar['manufact']."'
                    WHERE id='".$good->id."'";
                    //print '<br>'.$tovar['articul'].' '.$tovar['name'].'  количество='.$sklad. ' (уст. есть в наличии)';

                    $_all_counter['upd']++;
            }
            else // если же не присутствует , то добавляем его
            {
                $price_val = 0;
                foreach ($aCosts as $oRule) {
                    if ($oRule->for_new == '0') continue;
                    if ($tovar[whole_price][0] >= $oRule->price_min &&
                        $tovar[whole_price][0] <= $oRule->price_max)  {
                        $price_val= round(($tovar[whole_price][0]*$oRule->koef),-1);
                    }
                }
                $query ="INSERT INTO #__shop_prod
                    (articul,cat_id,name,old_name,from_xml,price,whole_price,update_description,alias,
                    sklad_sum,manufact,published)
                    VALUES
                    ('".mysql_real_escape_string($tovar['articul'])."','".$tovar[category]."',
                     '".mysql_real_escape_string($tovar[name])."',
                     '".mysql_real_escape_string($tovar[name])."',2,
                     '{$price_val}','".(int)($tovar[whole_price][0])."',0,'".$alias."','".$sklad_sum."',
                     '".$tovar['manufact']."','1')";
                $_all_counter['new']++;
            }
            //	echo $query."<br/>";
            //printu($query,'sql');
            //echo '<br>'.$query."<br/>";
            $db->setQuery($query);
            $db->query();


            $query = "SELECT id,cat_id,articul,main_img,add_img FROM #__shop_prod WHERE articul='".$tovar['articul']."' AND from_xml=2";
            $db->setQuery($query);
            $item=$db->loadObject();
            //printu($item,'item after update-insert');
            //	echo '<pre>';
            //	var_dump($product["size_color"]);
            //	echo '</pre>';
            if ($item->id != '' && !empty($tovar["color_size"])) {
                $query = "DELETE FROM #__shop_fields_values WHERE object_id = '{$item->id}' AND from_xml = '2'";
                $db->setQuery($query);
                $db->query();
            }
            if (!empty($tovar["color_size"]))
            foreach($tovar["color_size"] as $key=>$color_size){
                if($item->id != ''){
                    $query = "INSERT INTO #__shop_fields_values
                        (field_id,object_id,value,sklad,from_xml,original_articul)
                        VALUES
                        (1,'".$item->id."','".$color_size."','".$tovar[sklad][$key]."',2,'".$tovar[original_aricul][$key]."')";
                    $db->setQuery($query);
                    $db->query();
                }
            }
				
            // скачиваем основные фото
				
            if($item->main_img == "" && $item->cat_id =='55'){
                //print '<br>Get photo '.$tovar['main_img'];
                $file_path = $tovar['main_img'];
                preg_match_all('#http://(.*)/foto/(.*)#uiS', $tovar[main_img], $matches, PREG_PATTERN_ORDER);
                $file_path = str_replace($matches[2][0], str_replace(' ','%20',$matches[2][0]), $file_path);
//printu($file_path,'$file_path');
                $matches[2][0] = str_replace(' ', '_', $matches[2][0]);
                $file_dest = JPATH_SITE . '/components/com_shop/images/originals' . DS .$matches[2][0];
//printu($matches,'matches');
//printu($file_dest,'$file_dest');

                $curl = curl_init($file_path);
                curl_setopt($curl, CURLOPT_HEADER ,1);
                curl_setopt($curl,CURLOPT_USERAGENT,'Googlebot/2.1 (+http://www.google.com/bot.html)');
                curl_setopt($curl, CURLOPT_NOBODY ,1);
                curl_setopt($curl, CURLOPT_RETURNTRANSFER ,1);
                curl_exec($curl);
                $image_size = curl_getinfo($curl,CURLINFO_CONTENT_LENGTH_DOWNLOAD);
                $http_code = curl_getinfo($curl,CURLINFO_HTTP_CODE);
                curl_close($curl);
//printu($http_code,'http_code');
//printu($image_size,'$image_size');
                if($http_code == 200 && $image_size > 3000){
                        copy($file_path,$file_dest);

                        $query = "UPDATE #__shop_prod SET main_img='".$matches[2][0]."' WHERE id=".$item->id;
                        //printu($query,'$query'); die;
                        $db->setQuery($query);
                        $db->query();
                }
                $m++;
            } else {
                if (empty($nophoto2))
                {
                $file_path = urlencode($tovar['main_img']);
                preg_match_all('#http://(.*)/foto/(.*)#uiS', $tovar['main_img'], $matches, PREG_PATTERN_ORDER);
                $file_path = str_replace($matches[2][0], str_replace(' ','%20',$matches[2][0]), $file_path);
                $matches[2][0] = str_replace(' ', '_', $matches[2][0]);
                $file_dest = JPATH_SITE . '/components/com_shop/images/originals' . DS .$matches[2][0];

                //$file_path = 'http://optintim.ru/foto/'.$item->main_img;
                //$file_dest = JPATH_SITE . '/components/com_shop/images/originals' . DS .$item->main_img;
                $curl = curl_init($file_path);
                curl_setopt($curl, CURLOPT_HEADER ,1);
                curl_setopt($curl, CURLOPT_NOBODY ,1);
                curl_setopt($curl,CURLOPT_USERAGENT,'Googlebot/2.1 (+http://www.google.com/bot.html)');
                curl_setopt($curl, CURLOPT_RETURNTRANSFER ,1);
                curl_exec($curl);
                $image_size = curl_getinfo($curl,CURLINFO_CONTENT_LENGTH_DOWNLOAD);
                $http_code = curl_getinfo($curl,CURLINFO_HTTP_CODE);
                curl_close($curl);

                $file_size = @filesize($file_dest);

                if($http_code == 200 && $image_size > 3000)
                        if($file_size != $image_size){

                                copy($file_path,$file_dest);

                                $query = "UPDATE #__shop_prod SET main_img='".$matches[2][0]."' WHERE id=".$item->id;
                                $db->setQuery($query);
                                $db->query();
                        }
                }//end nophoto
                $k++;
            }
				
            $query = "SELECT id,articul,main_img,add_img FROM #__shop_prod WHERE articul='".$tovar['articul']."' AND from_xml=2";
            $db->setQuery($query);
            $item=$db->loadObject();

            // скачиваем доп фото
            $add_img = @array_unique($tovar['add_img']);
            for($i=0;$i<count($add_img);$i++){
                    if($add_img[$i] == 'http://optintim.ru/foto/'.$item->main_img)
                            unset($add_img[$i]);
            }
            $additional_img = explode(';',$item->add_img);
            //	foreach($additional_img as $path){
            //		@unlink(JPATH_SITE . '/components/com_shop/images/originals' . DS .$path); // удаляем оригинал
            //		@unlink(JPATH_SITE . '/components/com_shop/images/big' . DS .$path); // удаляем small
            //		@unlink(JPATH_SITE . '/components/com_shop/images/small' . DS .$path); // удаляем big
            //	}
            if($additional_img[0] != '') {
                $insert_img = $additional_img;
            } else {
                $insert_img = array();
            }
            if(count($add_img)>0) {
                foreach($add_img as $img){
                    $file_path = $img;
                    preg_match_all('#http://optintim.ru/foto/(.*)#uiS', $img, $matches, PREG_PATTERN_ORDER);
                    if(array_search($matches[1][0],$additional_img)===false && $matches[1][0] != $item->main_img){
                        $file_dest = JPATH_SITE . '/components/com_shop/images/originals' . DS .$matches[1][0];
                        $curl = curl_init($file_path);
                        curl_setopt($curl, CURLOPT_HEADER ,1);
                        curl_setopt($curl, CURLOPT_NOBODY ,1);
                        curl_setopt($curl,CURLOPT_USERAGENT,'Googlebot/2.1 (+http://www.google.com/bot.html)');
                        curl_setopt($curl, CURLOPT_RETURNTRANSFER ,1);
                        curl_exec($curl);
                        $image_size = curl_getinfo($curl,CURLINFO_CONTENT_LENGTH_DOWNLOAD);
                        $http_code = curl_getinfo($curl,CURLINFO_HTTP_CODE);
                        curl_close($curl);

                        $file_size = @filesize($file_dest);
                        copy($file_path,$file_dest);
                        $insert_img[]=$matches[1][0];
                    }
                }
            }
            $query = "UPDATE #__shop_prod SET add_img='".implode(';',$insert_img)."' WHERE id=".$item->id;
            $db->setQuery($query);
            $db->query();
        }
        print "Товаров в обработке: {$_all_counter['all']}<br>\n";
        print "Товаров обновлено: {$_all_counter['upd']}<br>\n";
        print "Товаров добавлено: {$_all_counter['new']}<br>\n<br>\n";
        $mtime = microtime();
        $mtime = explode(" ",$mtime);
        $mtime = $mtime[1] + $mtime[0];
        //Записываем время окончания в другую переменную
        $tend = $mtime;
        //Вычисляем разницу
        $totaltime = ($tend - $tstart);
        //Выводим не экран

        echo '<h2>Готово !</h2>';
        echo "<br/><br/>Страница сгенерирована за $totaltime секунд !";
    break;
    case 102:
        ini_set('max_execution_time',60);
        ini_set('memory_limit','64M');
			
        $iterration = JRequest::getInt('iter',0); // получаем текущий шаг операции
        $step = 150; // задали шаг операции , т.е. за каждый цикл будет обрабатыватся по 50 изображений
        if($iterration == 0){ // если шаг нулевой , то получаем время начала
                $mtime = microtime();
                //Разделяем секунды и миллисекунды
                $mtime = explode(" ",$mtime);
                //Составляем одно число из секунд и миллисекунд
                $mtime = $mtime[1] + $mtime[0];
                //Записываем стартовое время в переменную
                $tstart = $mtime;
        }
        else
                $tstart = JRequest::getVar('tstart');
			
			$query = "SELECT main_img,add_img FROM #__shop_prod WHERE from_xml=2 LIMIT ".($step*$iterration).",".$step; // получаем из базы все товары, добавленные из xml
			$db->setQuery($query);
			$items = $db->loadObjectList();
			echo count($items);
			foreach($items as $item){
			//	echo $item->main_img."<br/>";
				if($item->main_img != '' && file_exists(JPATH_SITE . '/components/com_shop/images/originals' . DS .$item->main_img)){
					
					dgImageCreate(JPATH_SITE . '/components/com_shop/images/originals' . DS .$item->main_img, JPATH_SITE . '/components/com_shop/images/small' . DS . $item->main_img, 200, 200, '95', '1');
					dgImageCreate(JPATH_SITE . '/components/com_shop/images/originals' . DS .$item->main_img, JPATH_SITE . '/components/com_shop/images/big' . DS . $item->main_img, 220, 280, '95', '1');
				}
				$add_img = explode(';',$item->add_img);
				foreach($add_img as $img){
					if($img != '' && file_exists(JPATH_SITE . '/components/com_shop/images/originals' . DS .$img)){
					dgImageCreate(JPATH_SITE . '/components/com_shop/images/originals' . DS .$img, JPATH_SITE . '/components/com_shop/images/small' . DS . $img, 200, 200, '95', '1');
					dgImageCreate(JPATH_SITE . '/components/com_shop/images/originals' . DS .$img, JPATH_SITE . '/components/com_shop/images/big' . DS . $img, 220, 280, '95', '1');
					}
				}
			}
			
			
			$mtime = microtime(); 
			$mtime = explode(" ",$mtime); 
			$mtime = $mtime[1] + $mtime[0]; 
			//Записываем время окончания в другую переменную 
			$tend = $mtime; 
			//Вычисляем разницу 
			$totaltime = ($tend - $tstart); 
			//Выводим не экран 
			if(count($items) == $step)
				$mainframe->redirect("index.php?option=com_shop&view=price&stage=delay_5sec&next_iter=".($iterration+1)."&next_step=main_thumbs2&tstart=".$tstart);
			else
				echo '<h2>Создание превью завершено !</h2>';
			echo "<br/><br/>Страница сгенерирована за $totaltime секунд !";
		
		break;
		
		}		
		
		
		parent::display($tpl);
	}

        function handle_database_opt($file_name) {
            // скачиваем прайс
            $xls_path = $file_name;
            @unlink('second.xls');
            file_put_contents('second.xls', file_get_contents($xls_path));
            $data = new Spreadsheet_Excel_Reader('second.xls');// создаем объект , который в дальнейше будем анализировать

            $k2=0;
            $k=0;
            $line=$line2=array();
            // перебираем для softline и роксаны
            $last_color_digit = 0;
            $totalData=$data->rowcount();
            //printu ($totalData,'$totalData');
            $stopper = $totalData;
            $stopper = 5;
            $other_cats = array();
            $sex_cats=array(
                'Сделано с России',
                'LUXE презервативы',
                'Sagami презервативы',
                'We-Vibe',
                'ВибраКольца "Е"',
            );

            $access_only = array('Soft');
$z = 0;
            for($i=2;$i<=$totalData;$i++){
                //if ($z >= $stopper) break;
                if (!in_array($inf, $other_cats))
                        $other_cats[] = $inf;
                $inf=$data->val($i,2);
                if(stripos($inf,'soft') !== false) $inf = 'Soft';
                elseif (stripos($inf,'Roxana') !== false) $inf = 'Roxana';
                elseif (stripos($inf,'Сделано с России') !== false) $inf = 'Сделано с России';
                elseif (stripos($inf,'LUXE') !== false) $inf = 'LUXE';
                elseif (stripos($inf,'Sagami') !== false) $inf = 'Sagami';
                elseif (stripos($inf,'We-Vibe') !== false) $inf = 'We-Vibe';
                elseif (stripos($inf,'ВибраКольца') !== false) $inf = 'ВибраКольца';

                //if (!in_array($inf, $access_only)) continue;
                //$z++;
                if(stripos($inf,'soft') !== false) {
                    $this->handle_add_soft ($data,$i);
                } elseif (stripos($inf,'Roxana') !== false) {
                    $this->handle_add_roxana ($data,$i);
                } elseif (in_array($inf, $sex_cats)) {
                    $this->handle_add_sex ($data,$i);
                }
            }
            //printu($other_cats,'other_cats');
            //printu($this->goods2,'goods2');
            //printu($this->goods,'$this->goods');
            //die;
            return;
        }

        function handle_add_soft ($data,$i) {
            preg_match_all('#([[:digit:] ]*)/ (SLC) /(.*), (цвет|ц\.) (.*), (размер|р\.) (.*)#iuS', $data->val($i,3), $matches, PREG_PATTERN_ORDER);
            //	$articul_last = $data->val($i-1,5);
            //	if($articul_last !=  $data->val($i,5) && $last_color_digit != $matches[1][0]){
            $digits = explode(' ',$matches[1][0]);
            //printu(count($digits),$matches[1][0].' digits');
            if(count($digits)>3){
                $tovar['category'] = '-1';
                $tovar['color_size'][0] = $matches[5][0]." / ".$matches[7][0];
                $tovar['name'] = $matches[3][0];
                $tovar['manufact'] = "SLC (Польша)";
                $tovar['main_img'] = $data->val($i,4);
                //	$tovar['articul'] = $data->val($i,5);
                $tovar['new_articul'] = $data->val($i,5);
                //	if(stripos($matches[7][0],'XL') !== false)

                $tovar['sklad'][0] = $data->val($i,7);
                $tovar['original_aricul'][0] = $data->val($i,5);
                $tovar['whole_price'][0] = (int)str_ireplace(',','',$data->val($i,8));
                if(count($digits)==5){
                    $tovar['last_color_digit'] = $digits[0].$digits[2];
                    $tovar['articul'] = $digits[3].$digits[2].$digits[0];
                }
                if(count($digits)==6){
                    $tovar['last_color_digit'] = $digits[0].$digits[1];
                    $tovar['articul'] = $digits[4].$digits[3].$digits[0].$digits[1];
                }
                $tovar['add_img'][0]=$data->val($i,4);
                $this->goods[] = $tovar;
                if(stripos($matches[7][0],'XL') !== false){
                    $tovar['last_color_digit'] .= "L";
                    $tovar['articul'] .= "L";
                    $tovar['category'] = '-4';
                    $this->goods[] = $tovar;
                }
                //printu($tovar['articul'],'articul');
            }
            
            return;
        }
        function handle_add_roxana ($data,$i) {
            preg_match_all('#(.*)/ (SLC|ROXANA) /(.*), цвет (.*), размер (.*)#iuS', $data->val($i,3), $matches, PREG_PATTERN_ORDER);
            $tovar['manufact'] = "Roxana (Польша)";
            $tovar['category'] = '-1';
            $tovar['color_size'][0] = $matches[4][0]." / ".$matches[5][0];
            $tovar['name'] = $matches[3][0];
            $tovar['main_img'] = $data->val($i,4);
            $tovar['articul'] = substr($data->val($i,5),0,strlen($data->val($i,5))-1);
            $tovar['compare_articul'] = substr($data->val($i,5),0,strlen($data->val($i,5))-1);
            $tovar['sklad'][0] = $data->val($i,7);
            $tovar['original_aricul'][0] = (int)str_ireplace(',','',$data->val($i,5));
            $tovar['whole_price'][0] = $data->val($i,8);

            $tovar['add_img'][0]=$data->val($i,4);
            $this->goods2[] = $tovar;
            //printu($tovar,'tovar');
            if(stripos($matches[5][0],'XL') !== false){
                $tovar['compare_articul'] .= "L";
                $tovar['articul'] .= "L";
                $tovar['category'] = '-4';
                $this->goods2[] = $tovar;
            }
            return;
        }
        function handle_add_sex($data,$i) {
            $sCategory = $data->val($i,2);
            switch ($sCategory) {
                case"Сделано с России":
                    //printu($data->val($i,3),'Caption');
                    preg_match_all('/[\d,]{1,}\sсм/iuS', $data->val($i,3), $matches, PREG_PATTERN_ORDER);
                    if (isset($matches[0][0]))
                        $tovar['color_size'][0] = "Длина ".$matches[0][0].(isset($matches[0][1])?" / Диаметр".$matches[0][1]:'');
                    $tovar['manufact'] = "Росиия";
                    $_n = explode('/',$data->val($i,3));
                    if (isset($_n[1]))
                        $tovar['name'] = trim($_n[1]);
                    else
                        $tovar['name'] = $data->val($i,3);
                    $tovar['articul'] = substr($data->val($i,5),0,strlen($data->val($i,5))-1);
                    $tovar['compare_articul'] = substr($data->val($i,5),0,strlen($data->val($i,5))-1);
                    $tovar['original_aricul'][0] = (int)str_ireplace(',','',$data->val($i,5));
                    //printu($matches,'matches');
                break;
                case"LUXE презервативы":
                    $tovar['manufact'] = "LUXE (Китай)";
                    $_n = explode('. ',$data->val($i,3));
                    $tovar['color_size'][0] = $_n[0].'.';
                    $tovar['name'] = trim(str_replace($tovar['color_size'][0],'',$data->val($i,3)));
                    $tovar['articul'] = str_replace(' ','-',strtoupper($data->val($i,5)));
                    $tovar['compare_articul'] = str_replace(' ','-',strtoupper($data->val($i,5)));
                    $tovar['original_aricul'][0] = $data->val($i,5);
                break;
                case"Sagami презервативы":
                    $tovar['manufact'] = "Sagami (Япония)";
                    $_n = explode(' ',$data->val($i,3));
                    $tovar['color_size'][0] = $_n[0].' №'.$_n[2];
                    $tovar['name'] = trim(str_replace($_n[0].' '.$_n[1].' '.$_n[2],'',$data->val($i,3)));
                    $tovar['articul'] = str_replace(' ','-',strtoupper($data->val($i,5)));
                    $tovar['compare_articul'] = str_replace(' ','-',strtoupper($data->val($i,5)));
                    $tovar['original_aricul'][0] = $data->val($i,5);
                break;
                case"We-Vibe":
                    preg_match_all('/\((.*)\)/iuS', $data->val($i,3), $matches, PREG_PATTERN_ORDER);
                    if (isset($matches[1][0]))
                        $tovar['color_size'][0] = $matches[1][0];
                    $tovar['manufact'] = "Standart Inc. (Канада)";
                    $_n = explode('/',  strip_tags($data->val($i,3)));
                    $tovar['name'] = $_n[0];
                    if (isset($_n[1]))
                    $tovar['description'] = $_n[1];
                    $tovar['articul'] = str_replace(' ','-',strtoupper($data->val($i,5)));
                    $tovar['compare_articul'] = str_replace(' ','-',strtoupper($data->val($i,5)));
                    $tovar['original_aricul'][0] = $data->val($i,5);
                break;
                case"ВибраКольца \"Е\"":
                    $tovar['manufact'] = "Roxana (Польша)";
                    $_n = explode('" ',  strip_tags($data->val($i,3)));
                    $tovar['name'] = $_n[0].'"';
                    $tovar['color_size'][0] = trim(str_replace($tovar['name'], '', $data->val($i,3)));
                    $tovar['articul'] = str_replace(' ','-',strtoupper($data->val($i,5)));
                    $tovar['compare_articul'] = str_replace(' ','-',strtoupper($data->val($i,5)));
                    $tovar['original_aricul'][0] = $data->val($i,5);
                break;
            }
            $tovar['category'] = '55';
            $tovar['main_img'] = $data->val($i,4);
            $tovar['sklad'][0] = $data->val($i,7);
            $tovar['whole_price'][0] = $data->val($i,8);
            $tovar['add_img'][0]=$data->val($i,4);

            $this->goods3[] = $tovar;
            return;
        }

	function _translate($title)
	{
		$tbl= array(
			'а'=>'a', 'б'=>'b', 'в'=>'v', 'г'=>'g', 'д'=>'d', 'е'=>'e', 'ж'=>'g', 'з'=>'z',
			'и'=>'i', 'й'=>'y', 'к'=>'k', 'л'=>'l', 'м'=>'m', 'н'=>'n', 'о'=>'o', 'п'=>'p',
			'р'=>'r', 'с'=>'s', 'т'=>'t', 'у'=>'u', 'ф'=>'f', 'ы'=>'i', 'э'=>'e', 'А'=>'A',
			'Б'=>'B', 'В'=>'V', 'Г'=>'G', 'Д'=>'D', 'Е'=>'E', 'Ж'=>'G', 'З'=>'Z', 'И'=>'I',
			'Й'=>'Y', 'К'=>'K', 'Л'=>'L', 'М'=>'M', 'Н'=>'N', 'О'=>'O', 'П'=>'P', 'Р'=>'R',
			'С'=>'S', 'Т'=>'T', 'У'=>'U', 'Ф'=>'F', 'Ы'=>'I', 'Э'=>'E', 'ё'=>"yo", 'х'=>"h",
			'ц'=>"ts", 'ч'=>"ch", 'ш'=>"sh", 'щ'=>"shch", 'ъ'=>"", 'ь'=>"", 'ю'=>"yu", 'я'=>"ya",
			'Ё'=>"YO", 'Х'=>"H", 'Ц'=>"TS", 'Ч'=>"CH", 'Ш'=>"SH", 'Щ'=>"SHCH", 'Ъ'=>"", 'Ь'=>"",
			'Ю'=>"YU", 'Я'=>"YA", ' '=>"-", '('=>'', ')'=>'', ','=>'', '.'=>''
			);

		$translate = mb_strtolower(strtr($title, $tbl));
		return $translate;
	}
	// функция проверяет является ли фотография уникальной по размеру
	function _imageSize($array_of_sizes,$size){
		foreach($array_of_sizes as $item){
			if(abs($item-$size)<1000)
				return false;
		}
		return true;
	}

	
}

?>